package com.wn.controller;

import com.wn.pojo.Chapter;
import com.wn.service.IChapterService;
import com.wn.utils.Result;
import com.wn.vo.ChapterVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Generated;
import java.util.List;

/**
 * <p>
 * 课程 前端控制器
 * </p>
 *
 * @author yellow docker
 * @since 2023-06-21
 */
@RestController
@RequestMapping("/chapter")
public class ChapterController extends BaseController{

    @Autowired
    private IChapterService chapterService;

    @GetMapping("/video/{courseId}")
    public Result findChapterVideoByCourseId(@PathVariable("courseId")String courseId){

        List<ChapterVO> list = chapterService.listChapterVideoByCourseId(courseId);
        return toDataResult(list);
    }

    @ApiOperation("通过id查询章节")
    @GetMapping("/{id}")
    public Result findChapter(@PathVariable("id")String id){
        Chapter chapter = chapterService.getById(id);
        return toDataResult(chapter);
    }

    /**
     *
     *  dto    前端 发送的数据到后端、后端用一个对象来封装接受这个数据
     *         问题:   dto 可以直接使用   pojo 可以    (pojo 传递过来 很多事空 的 不方便 )
     *  vo     视图展示对象、后对通过数据处理、把需要展示的数据进行封装成vo 发送给前端
     *         问题:   vo 可以直接使用   pojo 可以   (没有必要的字段可以不用传递给前端 )
     *  pojo   实体类
     *
     * @param chapter
     * @return
     */
    @ApiOperation("添加和修改章节")
    @PostMapping
    public Result updateChapter(@RequestBody Chapter chapter){
        //添加或者修改
        boolean flag = chapterService.saveOrUpdate(chapter);
        return toResult(flag);
    }

    @ApiOperation("通过id删除")
    @DeleteMapping("/{id}")
    public Result deleteChapterById(@PathVariable("id")String id){
        boolean flag = chapterService.deleteChapterById(id);
        return toResult(flag);
    }

}